﻿namespace Grow.Log
{
    /// <summary>
    /// 日志操作
    /// </summary>
    public interface ILog<out TCategoryName>
    {
        /// <summary>
        /// Critical
        /// </summary>
        /// <param name="message">信息</param>
        /// <param name="exception">异常</param>
        /// <param name="eventId">evntId</param>
        void LogCritical(string message, Exception? exception = null, int eventId = 0);
        /// <summary>
        /// Debug
        /// </summary>
        /// <param name="message">信息</param>
        /// <param name="exception">异常</param>
        /// <param name="eventId">evntId</param>
        void LogDebug(string message, Exception? exception = null, int eventId = 0);
        /// <summary>
        /// Error
        /// </summary>
        /// <param name="message">信息</param>
        /// <param name="exception">异常</param>
        /// <param name="eventId">evntId</param>
        void LogError(string message, Exception? exception = null, int eventId = 0);
        /// <summary>
        /// Information
        /// </summary>
        /// <param name="message">信息</param>
        /// <param name="exception">异常</param>
        /// <param name="eventId">evntId</param>
        void LogInformation(string message, Exception? exception = null, int eventId = 0);
        /// <summary>
        /// Trace
        /// </summary>
        /// <param name="message">信息</param>
        /// <param name="exception">异常</param>
        /// <param name="eventId">evntId</param>
        void LogTrace(string message, Exception? exception = null, int eventId = 0);
        /// <summary>
        /// Warning
        /// </summary>
        /// <param name="message">信息</param>
        /// <param name="exception">异常</param>
        /// <param name="eventId">evntId</param>
        void LogWarning(string message, Exception? exception = null, int eventId = 0);
    }
}
